package linear.stack;

import java.util.Arrays;

/**
 * @Author: fzykd
 * Date: 2024-04-11
 * Time: 21:13
 * User: LQH
 */


//顺序栈
public class ArrayStack {
    //顺序栈 用数组实现栈

    //实现栈的数组
    public int[] arr;

    //栈中实际的元素个数
    public int size;

    public ArrayStack(int k) {
        this.arr = new int[k];
    }

    //主要实现的方法
    //push()入栈
    public void push(int key) {
        //判断满不满
        if (size == arr.length) {
            arr = Arrays.copyOf(arr, arr.length * 2);
        }
        arr[size] = key;
        size++;
    }

    //pop()（返回栈顶元素并出栈）
    public int pop() {
        //判断栈空不空
        if (isEmpty()) {
            return -1;
        }
        int key = arr[size - 1];
        //出栈
        size--;
        return key;
    }

    //peek()（返回栈顶元素不出栈）
    public int peek() {
        if (isEmpty()) {
            return -1;
        }
        return arr[size - 1];
    }

    //isEmpty()这些基本的方法。
    public boolean isEmpty() {
        return size == 0;
    }


}
